package com.mjlf.algorithms.sort;


/**
 * @auther a123
 * @create 2018-09-05 19:30
 * @desc 选择排序
 *
 * 选择排序，选择排序是每次从未排序部分中找出最小/最大值将其与当前未排序部分第一个值进行交换
 *
 * 比较次数为: n*2 / 2
 * 调换次数为: n - 1
 *
 */
public class SelectionSort {

    public static void main(String[] args){
        Integer[] elements = {1, 3, 2, 5, 3, 8, 4};
        sort(elements);
        for(int el : elements){
            System.out.println(el);
        }
    }

    public static void sort(Comparable[] elements){
        for(int i = 0; i < elements.length; i++){
            int minIndex = i;
            for(int j = i + 1; j < elements.length; j ++){
                if(!SortUtil.less(elements[minIndex], elements[j])){//找到最小元素所在的位置
                    minIndex = j;
                }
            }
            SortUtil.exch(elements, i, minIndex);
        }
    }
}
